【Linux】用户与用户组区别 /文件权限详解/文件元数据的实际含义

您所在的位置:网站首页 linux 用户 用户组 权限 【Linux】用户与用户组区别 /文件权限详解/文件元数据的实际含义

【Linux】用户与用户组区别 /文件权限详解/文件元数据的实际含义

2023-12-06 08:52| 来源: 网络整理| 查看: 265

【Linux】一文带你详解linux用户与组, 文件权限以及文件元数据的含义 前言一 . linux中的用户与用户组1. linux中的用户1> 用户分类**2> linux用户: UID**3> 使用者标识 UID/GID的作用4> Linux中如何切换登陆用户 2.linux中的用户组1> 用户组概念2> 用户组的类型3> 用户组: GID 二 . linux中的文件1 . 文件访问者分类2 . 文件类型3 . 文件的访问权限1> rwx的具体含义2> rwx的几种组合方式3> rwx在普通文件中的含义4> rwx在目录文件中的含义5> 删除文件需要具备其父目录写权限的衍生问题6> 粘滞位的作用 三 . 文件元数据1 . 元数据的划分1. 模式2. 硬链接数3. 文件所有者4 . 文件所属用户组5 . 文件大小6 .文件最近一次修改时间7 . 文件名 2 . 一图速览文件元数据各部分含义 四 . 如何更改文件权限, 属主, 属组1. 文件权限的不同表示方法2. 文件默认权限从何而来1 . 什么是 umask2 . umask的作用修改umask的值 3. umask 四位八进制数中第一位含义1. 3个额外信息位2. chmod SUID, SGID和粘滞位的八进制值 4. 修改文件权限,5. 修改文件属主和属组6. 修改文件所属组7. sudo指令的临时权限提升1. 编辑sudo权限命令2. /etc/sudoers 配置文件说明3. 为用户组配置 sudo权限

前言

在之前,我们先了解几个概念以便更方便的了解文件系统

一 . linux中的用户与用户组 1. linux中的用户 1> 用户分类

分为以下三类:

超级用户(root): root, 具有一切操作权限。在Linux操作系统的字符界面, root用户的提示符为 #。系统用户: 系统用户时Linux系统正常工作所必需的内建的用户, 一般是用于管理服务所用。 系统用户不能用来登陆, 如 bin,daemon,lp等用户。普通用户:普通用户是为了让他人能够使用Linux系统资源而建立的, 新建的账户一般就是普通账号,在Linux操作系统的字符界面, 普通用户的提示符为 $。 2> linux用户: UID 管理员(root): 0普通用户: 1~65535系统用户: 1~499(CentOS6) / 1~999(CentOS7)登录用户: 500~ 65535(CentOS6) / 1000~65535(CentOS7)解析库: /etc/passwd 3> 使用者标识 UID/GID的作用

系统解析用户的时候, 不能直接的去解析用户, 能够识别的是ID号,在创建用户时, 会产生一个与UID相同的用户组,这个用户组也会有一个GID

4> Linux中如何切换登陆用户

已知,Linux系统中可以用来登陆的用户为超级用户(root)和普通用户(userName) 那么,我们是如何在不打开新窗口的情况下进行用户切换呢? 答案是 su 指令 用户切换分为以下几种情况

root用户 切换至 普通用户 - su userName // 在命令行提示符输入指令 su userName, 可直接切换为指定用户

在这里插入图片描述

普通用户 切换至 root用户 su root // 在命令行提示符输入指令 su root (root可以省略), 敲击回车后, 会弹出Password : 在此输入root用户密码。 敲击回车后, 即可切换至 root 用户

在这里插入图片描述

普通用户 切换至 普通用户 - su userName //在命令行提示符输入指令 su userName, 敲击回车后, 会弹出Password : 在此输入相应用户密码。 敲击回车后, 即可切换至 指定的普通用户

补充: - 当我们成功切换用户之后, 工作目录并没有改变, 依旧停留在切换用户之前的目录。

2.linux中的用户组 1> 用户组概念

用户组的概念:具有相同特征的用户的集合体,

简而言之, 就是一组用户的集合。 就像一个数组中存放了同种类型的元素。那我们为什么要把用户放入到用户组中呢? 。答案是 : 方便。 可以这样理解: 假如现在有100名普通用户,我想让这100名用户对同一个文件的权限是一致的,那我是一位用户一位用户地分配权限方便, 还是将这100名用户放入一个用户组中,然后给这个用户组分配权限方便呢? 那当然是给一个用户组分配权限更加方便啦。综上所述, 用户组就是对文件具有相同操作权限的用户的集合体 2> 用户组的类型 分类1 : 私有组,公共组分类2 : 基本组,附加组 3> 用户组: GID 管理员组(组名root): 0普通用户组: 1~65535系统用户组: 1~499(CentOS6) , 1-999(CentOS7)登录用户组: 500-65535(CentOS6), 1000-65535(CentOS7) 二 . linux中的文件 1 . 文件访问者分类

当访问一个文件时, 它的访问权限取决于访问者的身份

根据文件的创建及其所属组别分为以下三种

文件的所有者: u – User文件的所属组 : g – Group其他用户: o – Other 2 . 文件类型

linux的核心理念 : Everything is file — 一切皆文件

-, 普通文件: 储存普通数据, 一般为字符串d,目录文件: 储存的是一张表, 这张表记录了该目录下, 所有文件名与 inode 的映射关系。 d – directoryl, 软连接文件: 亦称符号链接文件,(类似于Windows的快捷方式)b, 块设备文件: (硬盘,光驱),b – blockc, 字符设备文件: (键盘,显示器等串口设备), c – characterp, 管道文件s, 套接口文件 3 . 文件的访问权限 1> rwx的具体含义

linux中文件的基本权限可分为以下三种

r : 读权限 ( 读取文件内容的权限 | 浏览目录信息的权限w: 写权限 ( 修改文件内容的权限 | 删除或移动目录下所有文件的权限x : 执行权限 ( 执行文件的权限 | 进入目录的权限 2> rwx的几种组合方式 linux表示含义linux表示含义r–只读r-x可读可执行-w-只写-wx可写可执行–x只可执行rwx可读可写可执行rw-可读可写—无任何权限 3> rwx在普通文件中的含义

r:可以读取这个普通文件的名字和内容。 w:可以修改这个文件的内容和文件名。 x:该文件是否具有被执行的权限。

易错补充 :

删除一个文件并不需要此文件的读写权限。 而是需要具备它所属目录文件的写权限 4> rwx在目录文件中的含义

r-x:

可以使用cd指令进入该目录,可以使用指令ls获得该目录下存储情况,不能修改这个目录内部存储的文件(目录)的名字,也不能在该目录下新建文件和目录

-wx:

可以使用cd指令该目录,无法该目录下的储存情况(指令ls 不可用),可以往该目录下添加、修改、删除文件。可以通过指令cat来读取该目录下的文件or目录的内容,由于得不到该目录下存储了那些文件,在不知情的情况下只能通过猜,cat + 文件名获得文件内容,所以这样依然不保密。

rw- :

不能使用cd指令该目录,无法获取该目录文件储存的inode号,使用指令ls仅仅可以获得文件名和目录名, (无法获取inode号)也不能获得该目录下的文件的内容,(无法获取inode号)不能往该目录下添加、修改、删除文件。

–x:

可以使用cd指令该目录,但是看不到存储情况,不能往该目录下添加、修改、删除文件。可以通过cat + xx(猜)来获得该目录下的文件的内容。 5> 删除文件需要具备其父目录写权限的衍生问题

由于,删除一个文件需要的是其所在目录的写权限。 那么当多个用户共用一个目录,在这个公有目录下可以随意创建删除自己的文件时,就会引发一个问题,每一个用户都具备该公有目录的写权限,可以随意删除他人或自己的文件,在这种情况下,如何避免用户所创建文件不被他人删除。

粘滞位的作用就是为了解决此情况。 在这里插入图片描述 可以看到上图中 dir_1 三类用户都具有 w 权限, 当我们使用粘滞位 代码为: chmod +t dir_1 在这里插入图片描述 使得目录文件 dir_1 最后一位的权限变为了 t。

6> 粘滞位的作用

粘滞位有什么作用呢? 当一个目录被设置 “粘滞位”, 那么该目录下的文件只能由:

超级管理员(root)删除该目录文件所有者删除该文件所有者删除 三 . 文件元数据 当我们在linux命令行中输入指令 ls -l 之后不仅可以看到 文件名, 还会看到一行数据, 这行数据叫做文件元数据。

如图中使用指令 ll后, 显示出来的两行数据 在这里插入图片描述 每行文件元数据分为七个部分

1 . 元数据的划分 1. 模式

- rw- r-- r-- 这串字符串一共有十个字符 我们将这十个字符分别以0 123 456 789进行表示。

字符 0 ,它代表文件的类型字符 123, 它代表文件所有者的访问权限,取决于rwx的组合字符 456 , 它代表文件所属用户组的访问权限,也就是这个用户组的权限。取决于rwx的组合字符 789, 它代表除用户组之外的其他用户的访问权限。取决于rwx的组合 2. 硬链接数

什么是硬链接

硬连接指通过索引节点来引用另一个文件。

什么是inode

在 Linux 的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配了一个编号,这个编号称为索引节点号(Inode Index)。

多个文件对应于同一个inode

在 Linux 中,多个文件名指向同一索引节点是存在的。如果两个文件指向同一索引节点,那么它们在目录项中的inode节点号相同

假如 文件A和文件B指向同一索引节点,则称A和B的链接状态完全相同,它们被称为指向文件的硬链接。内核记录了这个连接数,inode 的硬连接数显示为2。

总结 : - 有几个文件名指向同一个inode , 那么这个文件的元数据中所记录的硬链接数就是几》

3. 文件所有者

一般为文件的创建者, 谁创建了该文件, 谁就会天然的成为该文件的所有者

指令 ls -ahl 可以查看文件的所有者指令 chown [选项] 用户名 文件名 可以修改文件的所有者比如 chown root data 修改文件data的所有者为 root 4 . 文件所属用户组

当用户创建了一个文件后, 这个文件的所属组就是该用户所在的组

指令 ls -ahl 可以查看文件所属组指令 chgrp [选项] 组名 文件名 可以修改文件所属组比如 chgrp -r root : 省略了 路径 ./ 表示把当前目录下的所有文件的所属组改为root组 5 . 文件大小

所占内存, 二进制字节数

6 .文件最近一次修改时间

最后一次修改文件内容或文件属性的时间 文件时间区分

Access 最后访问时间Modify 文件内容最后修改时间Change 属性最后修改时间 7 . 文件名

创建文件时为文件起的名称

2 . 一图速览文件元数据各部分含义

在这里插入图片描述

四 . 如何更改文件权限, 属主, 属组 1. 文件权限的不同表示方法 在理解文件的表示方法之前, 先来了解一下什么是 **八进制模式** 安全设置

八进制模式

安全设置将一个rwx权限转换为 3位的二进制值, 然后这个二进制值可以由一个八进制表示。在二进制的表示中, 每个位置都是一个二进制位。就像, 如果读取权限是唯一的权限集, 那么其字母表示值就应该是 r-- , 对应的二进制值为100, 由八进制值表示则是4.这意味着, 是先将rwx的8种组合转化了8种二进制值, 再由二进制转化八进制值, 才有的八进制表示权限八进制模式通过3位八进制权限依次代表三种安全级别的权限值。(属主, 属组, 其他)像 664表示属主和属组具备读取和写入权限,而其他用户只具备读取权限 字符表示法八进制表示法二进制表示法说明r4100仅可读w2010仅可写x1001仅执行rw-6110可读可写r-x5101可读可执行-wx3011可写可执行rwx7111可读可写可执行—0000无权限 2. 文件默认权限从何而来 看了前面的内容我想你已经对文件权限有了个大概的认识, 那么这些 神奇的文件权限它又从何而来呢? 答案是 : umask -- (user file-creatiopn mode mask) 用户文件创建掩码 作用: umask命令为我们新创建的任何类型的文件设置默认权限 1 . 什么是 umask umask – (user file-creatiopn mode mask) 用户文件创建掩码是Linux系统或类Linux系统的一个命令该命令由三个八进制数组成取值范围位 0 000 - 0 777第一个数字它表示一种特殊的安全特性, 之所以添加到取值范围中是因为在我们命令行提示符处, 我们使用 umask 指令,它的打印结果是四个八进制数, 第一个八进制数表示的是一种特殊的安全特性。这种安全特性我们暂时不过多解释, 下面会简略说明 2 . umask的作用

作用: umask命令为我们新创建的任何类型的文件设置默认权限 通俗来讲, umask命令对应的三个八进制数决定了进程创建文件时,文件的默认权限。

我们先抛开umask不谈, 谈谈没有umask - 用户文件创建掩码时, 文件的完整权限是什么

普通文件的完整权限会是 0666 原因 : 创建普通文件一般都是用来读写, 所以默认情况下所有用户都具有读写权限, 但是没有可执行权限。 因此普通文件的默认权限是0666 目录文件的完整权限会是 0777 原因 : 目录文件的 x 权限为进入目录或者说是打开目录的权限, 所以这个权限必须要有,当然目录文件自然也包括读写权限。 因此目录i文件的默认权限就是 0777 在这里的权限表示方式都为八进制 6 代表 rw-7代表 rwx0 标识 这是一个八进制数 上述的情况是在没有umask下文件的完整权限。 在大多数Linux系统上, 默认umask的八进制值显示为0022,而此 时我们所创建的文件的默认权限并不是0666而是0644,这是如何发生的呢? umask值只是一个掩码, 它掩去你不希望文件在被创建时所拥有的 权限。 它的具体过程是, 在创建文件时, 文件的完整权限 减去 umask 码值 最后得到文件的默认权限 即: 文件默认权限 = 文件完整权限 - umask(权限掩码)

总结:

umask - 用户文件创建掩码, 也可以叫做文件掩码, 权限掩码, 甚至掩码, 叫法很多 。但是umasl值就是以三个八进制数分别表示着 属主, 属组, 其他 这三类文件访问者我们所不希望它们拥有的文件权限也就是说 umask 替我们掩去了这三类用户不同的权限文件默认权限 = 文件完整权限 - umask

补充说明:

这里的 - (减号) 实际上是掩盖, umask与文件默认权限相同的部分执行掩盖,不同的部分不执行掩盖操作。 所以如果单纯依靠计算数值来算文件新默认权限是不准确的比如 文件的权限为 655 umask的值为 022 那么按照 文件默认权限 = 文件完整权限 - umask 是不是就是 655 - 022 = 633, 可实际上却是 644 655 — “rwxrw-rw-” , 022 — “----w–w-” 按照 umask的掩盖 “rwxrw-rw-” 被 “----w–w-” 掩盖后为 “rwxr–r–” 而 “rwxr–r–” 对应的八进制数位 644所以在这里, 要准确理解 umask的掩盖, 掩盖掉你不想文件创建时被用户所拥有的权限。 修改umask的值 语法格式效果umask [三位八进制数]将umask的值修改为指定值

补充: 例如 , umask 024 , 这是将umask值修改为了 024 注意, 不能超出范围 (000 - 777)

3. umask 四位八进制数中第一位含义 1. 3个额外信息位

Linux为每个文件和目录都存储了3个额外的信息位 - set user id(SUID) : 当文件由用户执行时, 程序将在文件所有者的权限下运行 - set group id(SGID): 对于普通文件, 程序将在文件用户组的权限下运行。 - set group id(SGID): 对于目录文件, 目录中创建的新文件使用目录用户组作为默认用户组。 - 粘滞位: 进程结束后, 使得文件依旧保留(粘滞)在内存中

2. chmod SUID, SGID和粘滞位的八进制值 二进制八进制描述0000清空所有位0011设置粘滞位0102设置SGID位0113设置SGID和粘滞位1004设置SUID位1015设置SUID位和粘滞位1106设置SUID和SGID位1117设置所有位 4. 修改文件权限,

chmod命令允许修改文件和目录的权限

八进制命令格式如下: chmod [选项] [八进制权限] fileNam 示例 : $ chmod 760 fileName // 设置该目录文件的权限为760 $ ll fileName drwxrw---- 1 rich rich 0 sep 20 19:16 newfile 符号命令格式: chmod [选项] [u或g或o或a] [+或-或=] [rwxXstugo…]fileNameu — 文件所有者g — 文件所属组o — 其他用户a — 表示上述所有(+)—添加权限(-)— 减去权限(=) — 为已有权限赋值X — 用于指定执行权限, 仅当为目录文件或已经拥有执行权限时有效s – 用于设置正在执行的UID或GIDt — 用于保存程序文本u — 用于将权限设置为所有者的权限g — 用于将权限设置为用户组的权限o — 用于将权限设置为其他人的权限 选项 -R 递归执行对文件权限的修改 示例: chmod o+r file // 为文件file的其他用户添加读权限, o+r条目为其他用户添加了读取该文件的权限 chmod u-x file // 从文件file的所有者的权限中删除执行权限。 5. 修改文件属主和属组

chown命令支持修改文件的所有者和文件的所属用户组

语法chown [选项] [属主名称][:属组名称] 文件名功能修改文件的所有者和所属用户组选项-R , 递归式修改文件属主和属组

示例:

chown dan file // 将file文件的所有者修改为 dan chown dan.dan file // 将file文件的所有者和所属组均修改为 dan chown .rich file // 将file文件的所属组修改为 rich chown dan. file // 当且仅当文件属主和属组相同时, 该指令可同时修改属主和属组

注意: 普通用户在不具备权限的情况下, 无法更改文件的所属组, 所属主 可以搭配 sudo指令, 为其进行临时权限提升

6. 修改文件所属组

chgrp命令仅可支持修改文件的所属用户组

语法chgrp [选项] [属组名称] 文件名功能仅可以修改文件的默认所属用户组选项-R, 以递归的方式修改文件属组 7. sudo指令的临时权限提升 sudo是Linux系统中一种很常用的权限管理机制, 允许非root用户以特定的身份执行特定的命令。 sudo命令通过/etc/sudoers配置文件实现 1. 编辑sudo权限命令

sudo visudo

注意 : 不要直接编辑 /etc/sudoerrs文件, 因为这可能会导致配置文件错误,从而无法使用sudo命令

2. /etc/sudoers 配置文件说明 sudoers文件包含sudo命令所需的所有配置信息。 默认情况下, sudoers文件只能由root用户编辑并修改。 sudoers文件的默认位置是/etc/sudoers。

sudoers文件的内容格式如下:

[指定用户名] [指定ip] = [指定身份] [指定命令] // 具有该指定用户名且ip为指定ip的用户可以 以指定身份运行指定命令 // Jin_Nian 192.168.1.1 = root comman // 用户名为瑾年, ip为192.168.1.1 的用户可以 以root的身份运行某个指令 User_Alias ALIAS_NAME = username1, username2, ... // User alias specification Runas_Alias ALIAS_NAME = user1, user2, ... //Runas alias specification Host_Alias ALIAS_NAME = ip1, ip2, ... // IP alias specification Cmnd_Alias ALIAS_NAME = /bin/command1, /bin/command2, ... //Command alias specifition username : 表示用户名host : 表示主机名或ip地址runas : 表示以那个用户的身份运行命令, 默认为rootcommand : 表示可执行的命令或命令程序, 通常为root身份下才可以执行。 3. 为用户组配置 sudo权限 默认情况下, sudo只能给单个用户授权, 但也可以为用户组或者别名授权。 具体操作如下: sudo groupadd sudoers // 添加一个用户组 sudo usermod -aG sudoers username // 将用户添加至该用户组中 %sudoers ALL =(ALL) ALL // 修改sudoers配置文件, 编辑sudoers文件, 在文件末尾添加该内容。

sudo命令介绍:

语法sudo [选项] [命令]功能以指定身份执行某个指令

示例:

sudo apt-get update // 以root身份执行 apt-get update命令 sudo -s /bin/bash // 以root的身份切换至指定的shell 比如以root身份切换至 bash - shellsudo -l // 列出当前用户可用的sudo权限


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3